//
// Created by tang on 22-9-7.
//

#ifndef EXAMPLEVK_WINDOW_UTILS_HPP
#define EXAMPLEVK_WINDOW_UTILS_HPP

#include <GLFW/glfw3.h>

namespace core::app {
    class WindowCallbacks {
    public:
        static void AttachCallbacks(GLFWwindow *win);

    private:
        // key board
        static void KeyCallback(GLFWwindow *window, int key, int scancode,
                                int action, int mods);

        // resize
        static void ResizeCallback(GLFWwindow *window, int width, int height);


        // Mouse Buttons
        static void MouseButtonCallback(GLFWwindow *window, int button,
                                        int action, int mods);

        // Wheel
        static void ScrollCallback(GLFWwindow *window, double xdiff,
                                   double ydiff);
    };
}  // namespace core::app

#endif  // EXAMPLEVK_WINDOW_UTILS_HPP
